/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2008，所有权利保留。
 * 
 * 项目名： rumba
 * 文件名： Util.java
 * 模块说明：    
 * 修改历史：
 * Mar 21, 2008 - linhui - 创建。
 */
package com.hd123.rumba.gwt.welcome.client;

import java.util.Date;
import java.util.HashMap;

import com.google.gwt.i18n.client.DateTimeFormat;

public class Util {
  private static HashMap dayOfWeek = new HashMap(){
    {
      put("Sun", "星期日");
      put("Mon", "星期一");
      put("Tue", "星期二");
      put("Wed", "星期三");
      put("Thu", "星期四");
      put("Fri", "星期五");
      put("Sat", "星期六");
    }
  };
  private static String[] chineseWeek = new String[]{
    "星期日","星期一","星期二","星期三","星期四","星期五","星期六"
  };
  public static String getChineseDayofWeek(String dayofweek) {
    return dayOfWeek.get(dayofweek).toString();
  }
  
  /**
   * 获得格式如“2008年3月31日 星期一”的当前日期
   * 
   * @return 当前日期
   */
  public static String getDate() {
    Date today = new Date();
    int year = Integer.parseInt(DateTimeFormat.getFormat("yyyy").format(today));
    int month = Integer.parseInt(DateTimeFormat.getFormat("MM").format(today));
    int day = Integer.parseInt(DateTimeFormat.getFormat("dd").format(today));

    String now = DateTimeFormat.getFormat("yyyy年MM月dd日 ").format(new Date());
    return now + chineseWeek[ChineseCalendarGB.dayOfWeek(year, month, day)-1];
  }
  
  /**
   * 获得当前时刻的农历日期及当天节日信息
   * 
   * @return 农历日期及当天节日信息
   */
  public static String getLunarDayToday() {
    Date today = new Date();
    return getLunarDay(today, null);
  }
  
  /**
   * 获得当前时刻的农历日期及当天节日信息
   * 
   * @param seperate
   *          农历日期与节日信息间的分隔符
   * @return 农历日期及当天节日信息
   */
  public static String getLunarDayToday(String seperate) {
    Date today = new Date();
    return getLunarDay(today, seperate);
  }
  
  /**
   * 获得指定日期的农历日期及当天节日信息
   * 
   * @param date
   *          指定日期
   * @param seperate
   *          农历日期与节日信息间的分隔符
   * @return 农历日期及当天节日信息
   */
  public static String getLunarDay(Date date, String seperate) {
    int year = Integer.parseInt(DateTimeFormat.getFormat("yyyy").format(date));
    int month = Integer.parseInt(DateTimeFormat.getFormat("MM").format(date));
    int day = Integer.parseInt(DateTimeFormat.getFormat("dd").format(date));
    ChineseCalendarGB c = new ChineseCalendarGB();
    c.setGregorian(year, month, day);
    c.computeChineseFields();
    c.computeSolarTerms();
    if(seperate == null)
      return c.getLunarDay() + " " + c.getFestivalToday();
    else
      return c.getLunarDay() + seperate + c.getFestivalToday();
  }

}
